#include "textura.h"

Textura::Textura()
{
    idTextura = 0;            
    repetirHorizontalmente = false;
    repetirVerticalmente = false;  
}

Textura::Textura(const QString& rutaImagen)
{
    idTextura = 0;            
    repetirHorizontalmente = false;
    repetirVerticalmente = false; 
    cargar(rutaImagen);
}

Textura::~Textura()
{

}

void Textura::cargar(const QString& rutaImagen)
{
    imagen = QImage(rutaImagen);  
}

void Textura::inicializar(QGLWidget* glWidget)
{
    if (idTextura == 0) {
        idTextura = glWidget->bindTexture(QPixmap::fromImage(imagen), GL_TEXTURE_2D);
    }
}

QSize Textura::getTamano()
{
    return imagen.size();
}

void Textura::aplicar()
{
    if (idTextura == 0) {
        glDisable(GL_TEXTURE_2D);
        return;
    }
    glEnable(GL_TEXTURE_2D);    
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, repetirHorizontalmente ? GL_REPEAT : GL_CLAMP);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, repetirVerticalmente ? GL_REPEAT : GL_CLAMP);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glBindTexture(GL_TEXTURE_2D, idTextura);
}
